<!DOCTYPE html>
<html lang="zh-CN">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>JavaScript 闭包-内嵌函数</title>
</head>

<body>
    <!-- 所有函数都能访问全局变量。  
    实际上，在 JavaScript 中，所有函数都能访问它们上一层的作用域。
    JavaScript 支持嵌套函数。嵌套函数可以访问上一层的函数变量。 -->

    <!-- 该实例中，内嵌函数 plus() 可以访问父函数的 counter 变量： -->
    <p>局部变量计数。</p>
    <p id="demo">0</p>
    <script>
        document.getElementById("demo").innerHTML = add();
        function add() {
            var counter = 0;
            function plus() { counter += 1; }
            plus();
            return counter;
        }
    </script>
    <!-- 如果我们能在外部访问 plus() 函数，这样就能解决计数器的困境。
        我们同样需要确保 counter = 0 只执行一次。
        我们需要闭包。 -->
</body>

</html>